﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ComponentModel;
using ONa.Silverlight.UIComponents.UnitTests.SimpleHtmlFrame.Interfaces;

namespace ONa.Silverlight.UIComponents.UnitTests.SimpleHtmlFrame.ViewModels
{
    /// <summary>
    /// Cette classe représente le Vue Model pour le SimpleHtmlFrame
    /// </summary>
    public class SimpleHtmlFrameViewModel : INotifyPropertyChanged, ISimpleHtmlFrameViewModel
    {
        #region INotifyPropertyChanged Members

        /// <summary>
        /// Evènement lorsque qu'une propriété du ModelView est changée
        /// </summary>
        public event PropertyChangedEventHandler PropertyChanged;

        /// <summary>
        /// Evènement lorsque qu'une propriété du ModelView est changée
        /// </summary>
        protected void OnPropertyChanged(string propertyName)
        {
            if (this.PropertyChanged != null)
            {
                this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion
        
        #region Url Property

        /// <summary>
        /// Membre privée Url
        /// </summary>
        private string url;

        /// <summary>
        /// Propriété publique Url
        /// </summary>
        public string Url
        {
            get
            {
                return url;
            }
            set
            {
                if (this.url != value)
                {
                    this.url = value;
                    this.OnPropertyChanged("Url");
                }
            }
        }

        #endregion
        
        #region View Property

        /// <summary>
        /// Vue à utliser 
        /// </summary>
        public ISimpleHtmlFrameView View { get; private set; }

        #endregion

        #region Constructor

        /// <summary>
        /// Constructeur par défaut
        /// </summary>
        /// <param name="view">Vue sur laquelle est implémentée le ViewModel</param>
        public SimpleHtmlFrameViewModel(ISimpleHtmlFrameView view)
        {
            this.Url = @"http://www.codeplex.com/";
            this.View = view;
            this.View.Model = this;
        }

        #endregion
    }
}
